package jmine.tec.database.query;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

/**
 * Interface que deve ser definida por um campo.
 * 
 * @author lundberg
 */
public interface Column {

    /**
     * Obtém o nome da coluna
     * 
     * @return name
     */
    String getName();

    /**
     * Lê o conteúdo da coluna que está disponível no result set, convertendo-o para uma string apresentável ao usuário.
     * 
     * @param rs rs
     * @return string
     */
    String read(ResultSet rs);

    /**
     * Define o valor como parâmetro, realizando a conversão necessária
     * 
     * @param st statement
     * @param parameterIndex parameterIndex
     * @param value value
     * @throws SQLException SQLException
     */
    void setParameter(PreparedStatement st, int parameterIndex, String value) throws SQLException;

    /**
     * Verifica se esta coluna suporta filtros.
     * 
     * @return boolean
     */
    boolean supportsFilters();
}
